package com.ucar.train.service;

import com.ucar.train.dto.MenuDTO;
import com.ucar.train.dto.User;
import com.ucar.train.dto.Group;
import com.ucar.train.dto.UserRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface UserService {

    /**
     * 用户登入
     * @param phone 这里手机号作为登入用户名
     * @return
     */

    User login(String phone);

    /**
     * 用户注册
     * @param user
     * @return
     */
    Integer register(User user);

    /**
     * 保存用户信息
     * @param user
     */
    Integer saveUser(User user);

    /**
     * 根据用户id删除用户
     * @param id
     */
    Integer deleteUser(Long id);

    /**
     * 获取用户信息
     * @param id    用户Id
     * @return
     */
    User getUser(Long id);

    /**
     * 查询所有用户信息
     * @return
     */
    List<User> listUsers();

    /**
     * 根据ownerid查询组内所有用户
     * @return
     */
    List<User> listUserByGroupId(Long id);

    /**
     * 修改用户信息
     * @param user 用户对象
     */
    Integer updateUser(User user);

    /**
     * 查询到用户所有角色
     * @param id
     * @return
     */
    List<Long> listRolesByUser(long id);

    /**
     * 查看用户的所有角色信息
     * @param id
     * @return
     */
    List<UserRole> listRoleByUser(Long id);

    /**
     * 根据用户id查到该用户所拥有的资源权限
     * @param id 用户id
     * @return 返回用户所有资源权限信息
     */
    Set<MenuDTO> listMenusByUser(Long id);
}
